home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 7 / Amoszine 7 (Disk 3 of 3).adf / ARCHIVES / Oldie_Game_2.lha / galacticgabby / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1992-03-06  |  10KB  |  378 lines

  1. 'TITLE START 
  2. '
  3. '
  4. 'Dir$="df0:" 
  5. Screen Open 0,320,256,32,Lowres
  6. Hide On : Flash Off : Curs Off : Cls 0
  7. Sam Play 15,2,9500
  8. _COPYRIGHT[75]
  9. Wait 50
  10. For V=0 To 63
  11. Mvolume V : Wait Vbl 
  12. Music 1
  13. Next V
  14. Procedure _SMALL_COPYRIGHT[YDISPLAY]
  15.    '
  16.    Auto View Off 
  17.    '  
  18.    Screen Open 7,320,24,16,0 : Curs Off : Flash Off : Cls 0
  19.    Screen Display 7,,-100,,
  20.    Paste Bob 260,3,1
  21.    Paper 0 : Pen 4 : Print At(1,1);"This program was written using"
  22.    Get Sprite Palette 
  23.    View : Wait Vbl 
  24.    '
  25.    For Y=1 To Screen Height/2
  26.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  27.       Screen Offset 7,,Screen Height/2-Y
  28.       View : Wait Vbl 
  29.    Next 
  30.    '
  31.    Wait 100
  32.    '
  33.    For Y=Screen Height/2 To 0 Step -1
  34.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  35.       Screen Offset 7,,Screen Height/2-Y
  36.       View : Wait Vbl 
  37.    Next 
  38.    '
  39.    Screen Close 7
  40.    Auto View On 
  41.    '
  42. End Proc
  43. Procedure _COPYRIGHT[YDISPLAY]
  44.    '  
  45.    Auto View Off 
  46.    '
  47.    Unpack 10 To 7
  48.    '
  49.    For Y=2 To Screen Height/2 Step 2
  50.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  51.       Screen Offset 7,,Screen Height/2-Y
  52.       View 
  53.       Wait Vbl 
  54.    Next 
  55.    Wait 200
  56.    '
  57. Sam Play 15,2,9500
  58. Wait 100
  59. For Y=Screen Height/2 To 0 Step -8
  60.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  61.       Screen Offset 7,,Screen Height/2-Y
  62.       View 
  63.       Wait Vbl 
  64.    Next 
  65.    '
  66.    Screen Close 7
  67.    Auto View On 
  68.    '
  69. End Proc
  70. '
  71. '
  72. Unpack 2 To 0
  73. Screen Open 1,320,256,32,Lowres
  74. Cls 0 : Flash Off : Get Palette 0
  75. Appear 0 To 1,103 : Wait 200
  76. Load "sprites/titl1.abk"
  77. Fade 1,$0,$0,$0
  78. Wait 50 : Fade 1,$0,$0,$0,$0
  79. Wait 50
  80. Fade 1
  81. Wait 50
  82. Screen Close 0 : Cls 0
  83. Wait Vbl 
  84. '
  85. '
  86. Screen Open 3,640,400,4,Hires
  87. Screen Hide 3
  88. Cls 0
  89. Hide On 
  90. Curs Off : Flash Off : Cls 0 : Paper 0 : Pen 2
  91. Bob Clear 
  92. Bob 1,190,20,1
  93. Locate 6,9 : Print " Galactic Gabby is (YES) a clone of space invaders."
  94. Print 
  95. Print "        If you score 5000 you will get a bonus of 1000 points       "
  96. Print "        If you clear 11 levels you get a bonus of 5000 points       "
  97. Print "                + 1 extra life.                                     "
  98. Print 
  99. Print "                 You start the game with 3 lives                    "
  100. Print 
  101. Print 
  102. Print 
  103. Print "           USE YOUR JOYSTICK TO MOVE LEFT,RIGHT AND TO FIRE        "
  104. Print 
  105. Print "                        PRESS FIRE TO PLAY                         "
  106. Print "                        ******************                         "
  107. Print 
  108. Print 
  109. Print " programmed by   Nigel Riding,          42 Bleasdale ave,          "
  110. Print "                                             Thorton,            "
  111. Print "                                            Cleveleys,           "
  112. Print "                                              Blackpool,        "
  113. Print "                                                Lancs.           "
  114. Screen Open 2,640,400,4,Hires
  115. Cls 0
  116. Appear 3 To 2,1
  117. Repeat : Until Fire(1) : Fade 1 : Wait 1*15 : Music Off : Screen Close 3 : Screen Close 2
  118. '
  119. '
  120. '
  121. 'TITLE FINISH
  122. '
  123. 'MAIN GAME 
  124. '
  125. '
  126. Erase 1
  127. Bob Clear 
  128. Screen Open 0,320,256,16,Lowres
  129. Curs Off : Hide On : Cls 0 : Flash Off 
  130. Load "sprites/main.abk",1
  131. Double Buffer 
  132. Get Sprite Palette 
  133. '
  134. Make Mask 5 : Make Mask 6
  135. Dim X(20),Y(20),ALIENDEAD(20)
  136. Global X(),Y(),WHERETO,SPEED,SEP,X,N0,S0,ALIENDEAD(),ALIVE,SHIELDS
  137. Global LEVEL,SCORE,ALIENSHOT,SHOT,SHOTY,SHOTX,HISORMINE,LIVES
  138. Global NEWSHOT,ALIENSHOTX,ALIENSHOTY,SHIELD1,SHIELD2,SHIELD3
  139. '
  140.  N0=1 : X=150 : S0=5 : SHOTX=0 : SHOTY=150 : SHOT=0 : LIVES=3
  141.  LEVEL=0 : SCORE=0 : ALIENSHOTX=0 : NEWSHOT=0 : ALIENSHOT=0 : ALIENSHOTY=0
  142. '
  143. Ink 9,0 : Paper 0 : Pen 3
  144. '
  145. For COUNT=1 To 20
  146.  Hot Spot COUNT,$11
  147. Next COUNT
  148. '
  149. Proc _MAIN
  150. '
  151. Procedure _MAIN
  152. Sam Play 1
  153. Ink 15
  154. For X=1 To 40
  155. Plot Rnd(320),Rnd(200)
  156. Next X
  157.    SHIELDS=-1 : SEP=0 : ALIVE=20 : SPEED=1 : WHERETO=5 : Add LEVEL,1
  158.    MOVE=0 : SHIELD1=0 : SHIELD2=0 : SHIELD3=0 : HISORMINE=0
  159.    For COUNT=1 To 20
  160.       Read X(COUNT),Y(COUNT) : ALIENDEAD(COUNT)=COUNT
  161. If LEVEL=12 Then LEVEL=1 : SCORE=SCORE+2000 : LIVES=LIVES+1 : Sam Play 11 : Wait 80
  162. If SCORE=5000 Then SCORE=SCORE+1000 : Sam Play 11 : Wait 80
  163.       If LEVEL<=12
  164.          Y(COUNT)=Y(COUNT)+((LEVEL-1)*9)
  165.       Else Y(COUNT)=Y(COUNT)+110
  166.       End If 
  167.    Next COUNT
  168.    If LEVEL<=12 Then Bob 23,50,215,11 : Bob 24,150,215,11 : Bob 25,250,215,11
  169. Ink 9,0 : Paper 0 : Pen 1
  170.    Locate 9,0 : Print "WAVE ";LEVEL;"      1UP";SCORE
  171. Sam Play 8 : Wait 50
  172. '
  173.    Data 10,20,40,20,70,20,100,20,130,20
  174.    Data 10,45,40,45,70,45,100,45,130,45
  175.    Data 10,70,40,70,70,70,100,70,130,70
  176.    Data 10,95,40,95,70,95,100,95,130,95
  177.    '
  178.    Do 
  179.       Bob Update Off 
  180.       Add N0,1,1 To 4
  181.       If ALIENSHOT=1 Then Proc _ALIENSHOT
  182.       If ALIENSHOT=0 Then NEWSHOT=1 : Proc _ALIENSHOT
  183.       If Jleft(1) Then Add X,-6
  184.       If Jright(1) Then Add X,6
  185.       If S0=6
  186.          S0=5
  187.       Else S0=6
  188.  End If 
  189.       If X<15 Then X=15
  190.       If X>290 Then X=290
  191.       Sprite 0,X Hard(X),Y Hard(240),S0
  192.       If LIVES>=3
  193.          Sprite 2,X Hard(10),Y Hard(10),S0
  194.       End If 
  195.       If LIVES>=2
  196.          Sprite 4,X Hard(30),Y Hard(10),S0
  197.       End If 
  198.       If LIVES>=1
  199.          Sprite 6,X Hard(50),Y Hard(10),S0
  200.       End If 
  201.       '
  202.       Bob Update 
  203.       If Bob Col(21,1 To 20) Then SHOT=0 : SHOTY=0 : Bob Off 21 : Proc _GOTONE
  204.       If Spritebob Col(0,1 To 20) Then LIVES=0 : Proc _DEAD
  205.       If Spritebob Col(0,22 To 22) Then Proc _DEAD
  206.       If Bob Col(22,23 To 25) Then Proc _GOTSHIELD
  207.       If Bob Col(21,23 To 25) Then HISORMINE=-1 : Proc _GOTSHIELD
  208.       Proc _XMOVE
  209.       If Fire(1) and SHOT=0 Then Sam Play 7 : SHOT=1
  210.       If SHOT=1 Then Proc _MYSHOT
  211.       If SHOT=0 Then SHOTX=X
  212.    Loop 
  213. End Proc
  214. '
  215. Procedure _XMOVE
  216.    For COUNT=1 To 20
  217.       If WHERETO=5
  218.          Add X(COUNT),SPEED
  219.       Else Add X(COUNT),-SPEED
  220.       End If 
  221.       If ALIENDEAD(COUNT)<>0 and X(COUNT)>=310 Then MOVE=-1
  222.       If ALIENDEAD(COUNT)<>0 and X(COUNT)<=10 Then MOVE=-1
  223.       If ALIENDEAD(COUNT)<>0 Then Bob COUNT,X(COUNT),Y(COUNT),N0
  224.    Next COUNT
  225.    If MOVE Then MOVE=0 : Proc _YMOVE
  226. End Proc
  227. '
  228. Procedure _YMOVE
  229.    If WHERETO=5
  230.       WHERETO=-5
  231.    Else WHERETO=5
  232.    End If 
  233.    For COUNT=1 To 20
  234.       Add Y(COUNT),5
  235.    Next COUNT
  236.    If SHIELDS
  237.       For COUNT=1 To 20
  238.          If ALIENDEAD(COUNT)<>0 and Y(COUNT)>180
  239.             If SHIELDS
  240.                For COUNT1=1 To 5
  241.                   If SHIELD1<>0
  242.                      Sam Play 6 : Bob 23,50,215,COUNT1+14
  243.                   End If 
  244.                   If SHIELD2<>0
  245.                      Sam Play 6 : Bob 24,150,215,COUNT1+14
  246.                   End If 
  247.                   If SHIELD3<>0
  248.                      Sam Play 6 : Bob 25,250,215,COUNT1+14
  249.                   End If 
  250.                   Bob Update : Wait 5
  251.                Next COUNT1
  252.                Bob Off 23 : Bob Off 24 : Bob Off 25 : SHIELDS=0
  253.             End If 
  254.          End If 
  255.       Next COUNT
  256.    End If 
  257. End Proc
  258. '
  259. Procedure _DEAD
  260. Bob Off 22
  261.    Dec LIVES
  262. Sprite Off 0
  263. Sam Play 5
  264.    For DEAD=7 To 10
  265.       Bob 21,X,230,DEAD : Wait 5
  266.       Bob Update 
  267.    Next DEAD
  268.    Wait 20
  269.    Sprite Off 
  270.    If LIVES=<0
  271.     Bob Off : Fade 1 : Wait 1*15 : Load Iff "end.iff",0 : Wait 20 : Sam Play 9 : Wait 160 : Music 1
  272. Screen Open 1,320,256,32,Lowres
  273. Curs Off : Flash Off 
  274. Load Iff "scorend.iff",1
  275. Screen Hide 1
  276. Appear 1 To 0,1
  277. Screen Close 1
  278. Paper 0 : Pen 6 : Locate 18,15 : Print " ";SCORE : Wait 50
  279.         Locate 16,25 : Print "Y" : Locate 26,25 : Print "N"
  280.       Clear Key 
  281.       TEST:
  282.       If Inkey$="y"
  283.  Fade 1 : Wait 1*15 : Cls 0 : LEVEL=0 : LIVES=3 : SCORE=0 : Music Off : Get Sprite Palette : Double Buffer : Proc _MAIN
  284.       End If 
  285.       If Inkey$="n"
  286. Fade 1 : Music Off : Wait 1*15
  287.          End 
  288.       End If 
  289.       Goto TEST
  290.    Else Bob Off 21
  291.    End If 
  292. End Proc
  293. '
  294. Procedure _GOTONE
  295.    For COUNT=1 To 20
  296.       If Col(COUNT)
  297.          Bob COUNT,X(COUNT),Y(COUNT),14 : Sam Play 4
  298.          Bob Update : ALIENDEAD(COUNT)=0 : Bob Off COUNT : Wait Vbl 
  299.       End If 
  300.    Next COUNT
  301.    Dec ALIVE : SCORE=SCORE+50
  302.    SCORE$=Str$(SCORE) : Text 209,6,SCORE$
  303.    SPEED=Int(Abs(ALIVE-20)/2+1)
  304.    If ALIVE=0
  305.       Sprite Off 0 : Bob Off : Pen 6 : Locate 13,13 : Print "WAVE ";LEVEL
  306.       Locate 21,13 : Print "CLEARED" : Wait 180
  307.       Cls 0 : ALIENSHOT=0 : Proc _MAIN
  308.    End If 
  309. End Proc
  310. '
  311. Procedure _GOTSHIELD
  312.    If HISORMINE
  313.       HISORMINE=0 : GOB=21 : SHOT=0 : SHOTY=-1
  314.    Else GOB=22
  315.    End If 
  316.    If Bob Col(23)
  317.       Inc SHIELD1 : Bob 23,50,215,SHIELD1+14 : Bob Off GOB : NEWSHOT=1
  318.  Sam Play 6 : Wait Vbl 
  319.       If SHIELD1=5
  320.          Bob 23,50,215,19 : Bob Update : Wait Vbl : Bob 23,50,215,20
  321.          Sam Play 4 : Bob Update : Wait 10 : Bob Off 23 : SHIELD1=0 : Bob Off GOB
  322.          NEWSHOT=1
  323.       End If 
  324.    End If 
  325.    If Bob Col(24)
  326.       Inc SHIELD2 : Bob 24,150,215,SHIELD2+14 : Bob Off GOB : NEWSHOT=1
  327.       Sam Play 6 : Wait Vbl 
  328.       If SHIELD2=5
  329.          Bob 24,150,215,19 : Bob Update : Wait Vbl : Bob 24,150,215,20
  330.          Sam Play 4 : Bob Update : Wait 10 : Bob Off 24 : SHIELD2=0 : Bob Off GOB
  331.          NEWSHOT=1
  332.       End If 
  333.    End If 
  334.    If Bob Col(25)
  335.       Inc SHIELD3 : Bob 25,250,215,SHIELD3+14 : Bob Off GOB : NEWSHOT=1
  336.       Sam Play 6 : Wait Vbl 
  337.       If SHIELD3=5
  338.          Bob 25,250,215,19 : Bob Update : Wait Vbl : Bob 25,250,215,20
  339.          Sam Play 4 : Bob Update : Wait 10 : Bob Off 25 : SHIELD3=0 : Bob Off GOB
  340.          NEWSHOT=1
  341.       End If 
  342.    End If 
  343.    If SHIELD1=0 and SHIELD2=0 and SHIELD3=0 Then SHIELDS=0
  344. End Proc
  345. '
  346. Procedure _ALIENSHOT
  347.    If NEWSHOT=1 : Sam Play 10
  348.       NEWSHOT=0 : ALIEN=(Rnd(4))+16
  349.       If ALIENDEAD(ALIEN)=0
  350.          If ALIENDEAD(ALIEN-5)=0
  351.             Add ALIEN,-10
  352.          End If 
  353.          If ALIENDEAD(ALIEN)=0
  354.             Add ALIEN,-5
  355.          End If 
  356.          If ALIENDEAD(ALIEN)=0
  357.             ALIENSHOT=0 : ALIEN=0
  358.          End If 
  359.       End If 
  360.       If ALIEN<>0
  361.          ALIENSHOTX=X(ALIEN) : ALIENSHOTY=Y(ALIEN)+5
  362.          ALIENSHOT=1
  363.       End If 
  364.    End If 
  365.    If ALIENSHOTY<=240 and ALIENSHOT=1
  366.       Bob 22,ALIENSHOTX,ALIENSHOTY,13
  367.       Add ALIENSHOTY,12
  368.    Else Bob Off 22 : ALIENSHOT=0
  369.    End If 
  370. End Proc
  371. '
  372. Procedure _MYSHOT
  373.    SHOTY=SHOTY-20
  374.    Bob 21,SHOTX,SHOTY,12
  375.    If SHOTY<=0
  376.       SHOTX=0 : SHOTY=240 : SHOT=0 : Bob Off 21
  377.    End If 
  378. End Proc